package com.cskaoyan._05variable;

/**
 * @description:
 * @author: 景天
 * @date: 2023/1/29 10:15
 **/
/*
浮点数的精度问题:

十进制正小数（0.开头）转换成二进制，先用小数部分乘以2，取结果的整数部分(必然是1或者0)
1. 然后小数部分继续乘2
2. 直到小数部分为0，或者已经达到了最大的位数
3. 最终的结果（0.开头）正序排列
以0.1为例子
0.1 x 2 = 0.2--->0
0.2 x 2 = 0.4--->0
0.4 x 2 = 0.8--->0
0.8 x 2 = 1.6--->1
0.6 x 2 = 1.2--->0
0.2 x 2 = 0.4
.....无限循环

 */
public class Demo4 {
    public static void main(String[] args) {
        // 1. 使用Java代码计算 10 / 3.0
        System.out.println(10 / 3.0);
        //2. 使用Java代码计算 1 - 0.9
        System.out.println(1 - 0.9);

        double a = 0.1;
        float b = 0.1F;
        System.out.println(a == b);
        // false 精度不一样

        float c = 0.1F;
        float d = 0.10000000000000000001F; //中间18个0
        System.out.println(c == d);
        // true 有效位数有限
    }
}
